package com.cskaoyan.javase.oop1._11static._4notice;
/**
 *
 * 注意事项:
 *
 * 1.一个类中，静态方法无法直接调用非静态的方法和属性，也不能使用this，super关键字（super后面会讲）
 *      经典错误：Non-static field/method xxx cannot be referenced from a static context
 *      在一个静态的方法中,不能访问非静态的成员变量和方法
 *      原因：静态方法调用的时候，完全有可能没有对象，没有对象普通成员就无法访问。
 *
 * 2.普通成员方法当中，是可以访问静态成员的。
 *      显然，既然对象都存在了，类加载一定进行了，所以这种访问是完全可行的
 *      建议采用这种访问形式的时候，使用类名.变量名的形式访问，以示区别，增加代码可读性
 *
 * 3.只存在静态成员变量，不存在"静态局部变量"，包括静态方法中也没有"静态局部变量"。
 *      局部变量，已经被方法限制了作用域，不能用static修饰它！
 *
 *
 * 4.静态成员变量不建议使用创建对象时期执行的结构赋值，虽然可以这么做。
 *      比如用构造器给静态成员变量赋值，虽然可以，但这种赋值依赖于创建对象，不合适。
 *      当然,合不合适不是你说的算的,要看需求.只要能够实现需求,允许的代码都是可以使用的
 *
 * @since 11:11
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    int num;
    static int staticNum;
    public static void main(String[] args) {
        // Non-static field 'num' cannot be referenced from a static context
        // System.out.println(num);
        // int a = 10;
    }

    public void test(){
        // 以下num肯定是成员变量
        System.out.println(this.num);
        // 以下staticNum肯定是静态成员变量
        System.out.println(Demo.staticNum);
    }
}
